package code12;

import java.util.Arrays;
import java.util.Random;

import org.junit.Test;

public class Homework {
	@Test
	public void t1() {
		// 创建10个学生，并随机生成学生的各科目的成绩，成绩范围 70~89, id使用创建时的顺序， 最后把学生存入数组
		// 对数组中学生进行排序，按照总分降序，
		// 如果总分相同，按数学分数降序；如果数学分数相同，按语文分数降序，如果语文分数相同，则按id升序。
		int count = 10;
		Stu[] arr = new Stu[count];
		Random r = new Random(); 
		// 创建
		for (int i = 0; i < count; i++) {
			Stu s = new Stu(
					i + 1,
					r.nextInt(20) + 70,
					r.nextInt(20) + 70,
					r.nextInt(20) + 70
					);
			arr[i] = s;
		}
		// 排序
		Arrays.sort(arr);
		
		// 测试
		for (Stu stu : arr) {
			System.out.println(stu);
		}
	}
	
}
class Stu implements Comparable<Stu> {
	public int id;
	public int chinese;
	public int math;
	public int english;
	public int total;
	public Stu(int id, int math, int chinese, int english) {
		this.id = id;
		this.math = math;
		this.chinese = chinese;
		this.english = english;
		this.total = math + chinese + english;
	}
	@Override
	public String toString() {
		return "Stu [ total=" + total + ", math=" + math + ", chinese=" + chinese + ", id=" + id + ", english=" + english 
				+ "]";
	}
	@Override
	public int compareTo(Stu o) {
		// 排序规则: 按照总分降序，
		// 如果总分相同，按数学分数降序；如果数学分数相同，按语文分数降序，如果语文分数相同，则按id升序。
		if (this.total == o.total) {
			if (this.math == o.math) {
				if(o.chinese == this.chinese) {
					return this.id - o.id;
				}
				return o.chinese - this.chinese;
			}
			return o.math - this.math;
		}
		return o.total - this.total;
	}
}

